from rest_framework.views import APIView
from .models import Cate
from rest_framework.response import Response
from .serializers import CateModelSerializer







class CategoryView(APIView):
    """
    分类的添加
    """
    def post(self, request):
        # 获取前端提交的内容
        cate_level = request.data.get('cate_level')
        name = request.data.get('name')
        cate1_id = request.data.get('cate1_id')
        cate2_id = request.data.get('cate2_id')
        # 判断分类是否存在
        cate_obj = Cate.objects.filter(name=name)
        if cate_obj:
            return Response({'msg': '分类已存在', 'code': 400})
        # 添加顶级分类
        if cate_level == '0':
            # 构建添加分类的数据
            cate0_data = {'name': name}
            # 反序列化添加数据
            cate0_serializer = CateModelSerializer(data=cate0_data)
            # 校验数据
            if cate0_serializer.is_valid():
                # 校验成功
                cate0_serializer.save()
                # 响应数据
                return Response({'msg': '添加成功', 'code': 200})
            else:
                # 校验失败
                return Response({'error': cate0_serializer.errors, 'code': 400})
        elif cate_level == '1':  # 添加一级分类
            # 构建添加分类的数据
            cate1_data = {'name': name, 'parent': cate1_id}
            # 反序列化添加数据
            cate1_serializer = CateModelSerializer(data=cate1_data)
            # 校验数据
            if cate1_serializer.is_valid():
                # 校验成功
                cate1_serializer.save()
                # 响应数据
                return Response({'msg': '添加成功', 'code': 200})
            else:
                # 校验失败
                return Response({'error': cate1_serializer.errors, 'code': 400})
        else:
            # 构建添加分类的数据
            cate2_data = {'name': name, 'parent': cate2_id}
            # 反序列化添加数据
            cate2_serializer = CateModelSerializer(data=cate2_data)
            # 校验数据
            if cate2_serializer.is_valid():
                # 校验成功
                cate2_serializer.save()
                # 响应数据
                return Response({'msg': '添加成功', 'code': 200})
            else:
                # 校验失败
                return Response({'error': cate2_serializer.errors, 'code': 400})